home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 1998 November / IRIX 6.5.2 Base Documentation November 1998.img / usr / share / catman / p_man / cat3 / complib / dormtr.z / dormtr
Text File  |  1998-10-30  |  4KB  |  133 lines

  1.  
  2.  
  3.  
  4. DDDDOOOORRRRMMMMTTTTRRRR((((3333FFFF))))                                                          DDDDOOOORRRRMMMMTTTTRRRR((((3333FFFF))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      DORMTR - overwrite the general real M-by-N matrix C with   SIDE = 'L'
  10.      SIDE = 'R' TRANS = 'N'
  11.  
  12. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  13.      SUBROUTINE DORMTR( SIDE, UPLO, TRANS, M, N, A, LDA, TAU, C, LDC, WORK,
  14.                         LWORK, INFO )
  15.  
  16.          CHARACTER      SIDE, TRANS, UPLO
  17.  
  18.          INTEGER        INFO, LDA, LDC, LWORK, M, N
  19.  
  20.          DOUBLE         PRECISION A( LDA, * ), C( LDC, * ), TAU( * ), WORK(
  21.                         LWORK )
  22.  
  23. PPPPUUUURRRRPPPPOOOOSSSSEEEE
  24.      DORMTR overwrites the general real M-by-N matrix C with TRANS = 'T':
  25.      Q**T * C       C * Q**T
  26.  
  27.      where Q is a real orthogonal matrix of order nq, with nq = m if SIDE =
  28.      'L' and nq = n if SIDE = 'R'. Q is defined as the product of nq-1
  29.      elementary reflectors, as returned by DSYTRD:
  30.  
  31.      if UPLO = 'U', Q = H(nq-1) . . . H(2) H(1);
  32.  
  33.      if UPLO = 'L', Q = H(1) H(2) . . . H(nq-1).
  34.  
  35.  
  36. AAAARRRRGGGGUUUUMMMMEEEENNNNTTTTSSSS
  37.      SIDE    (input) CHARACTER*1
  38.              = 'L': apply Q or Q**T from the Left;
  39.              = 'R': apply Q or Q**T from the Right.
  40.  
  41.      UPLO    (input) CHARACTER*1
  42.              = 'U': Upper triangle of A contains elementary reflectors from
  43.              DSYTRD; = 'L': Lower triangle of A contains elementary reflectors
  44.              from DSYTRD.
  45.  
  46.      TRANS   (input) CHARACTER*1
  47.              = 'N':  No transpose, apply Q;
  48.              = 'T':  Transpose, apply Q**T.
  49.  
  50.      M       (input) INTEGER
  51.              The number of rows of the matrix C. M >= 0.
  52.  
  53.      N       (input) INTEGER
  54.              The number of columns of the matrix C. N >= 0.
  55.  
  56.      A       (input) DOUBLE PRECISION array, dimension
  57.              (LDA,M) if SIDE = 'L' (LDA,N) if SIDE = 'R' The vectors which
  58.              define the elementary reflectors, as returned by DSYTRD.
  59.  
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. DDDDOOOORRRRMMMMTTTTRRRR((((3333FFFF))))                                                          DDDDOOOORRRRMMMMTTTTRRRR((((3333FFFF))))
  71.  
  72.  
  73.  
  74.      LDA     (input) INTEGER
  75.              The leading dimension of the array A.  LDA >= max(1,M) if SIDE =
  76.              'L'; LDA >= max(1,N) if SIDE = 'R'.
  77.  
  78.      TAU     (input) DOUBLE PRECISION array, dimension
  79.              (M-1) if SIDE = 'L' (N-1) if SIDE = 'R' TAU(i) must contain the
  80.              scalar factor of the elementary reflector H(i), as returned by
  81.              DSYTRD.
  82.  
  83.      C       (input/output) DOUBLE PRECISION array, dimension (LDC,N)
  84.              On entry, the M-by-N matrix C.  On exit, C is overwritten by Q*C
  85.              or Q**T*C or C*Q**T or C*Q.
  86.  
  87.      LDC     (input) INTEGER
  88.              The leading dimension of the array C. LDC >= max(1,M).
  89.  
  90.      WORK    (workspace/output) DOUBLE PRECISION array, dimension (LWORK)
  91.              On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
  92.  
  93.      LWORK   (input) INTEGER
  94.              The dimension of the array WORK.  If SIDE = 'L', LWORK >=
  95.              max(1,N); if SIDE = 'R', LWORK >= max(1,M).  For optimum
  96.              performance LWORK >= N*NB if SIDE = 'L', and LWORK >= M*NB if
  97.              SIDE = 'R', where NB is the optimal blocksize.
  98.  
  99.      INFO    (output) INTEGER
  100.              = 0:  successful exit
  101.              < 0:  if INFO = -i, the i-th argument had an illegal value
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.